Code 128 条码
Code 128 编码方式是属于比较复杂的一种条码,应用起来比较有弹性,在1981年开始流行起来。
Code 128 条码主要特性有:
1.有A,B,C三种不同的编码型态,可以提供128个标准的ASCII code字元.
包括: 0~9的数字,英文大小写,各种特殊符号,以及控制码。
2.有一检查码,可自由决定是否要列印。
3.在可藉由A、B、C三种不同编码型态交叉使用,以缩短条码的长度。
4.可允许由左至右,或由右至左,双向扫瞄。
Code 128 条码基本结构
图一
Code 128 条码内容主要有四个部份:
1.起始码 (start code)
2.资料码 (data code)
3.结束码 (end code)
4.检查码 (check code):可有可无
Code 128 条码字元编码方式
Code 128 每一字元条码结构由3条Bar及3条Space所组成.又细分为11等分,组成不同粗细比。字元最粗的线条最高可达最细的4倍。
例如:起始码Code A
11010000100 条码里头space最粗是最细线条的4倍
再举个例子,我们以B型态中的特殊符号'/'说明
10111001100 最粗的bar是最细bar的3倍
起始码与结束码编码方式
Code 128 条码有A、B、C三种不同型态编码的字元表,要选择哪一种字元表取决于特殊控制码Code A,Code B与Code C。
起始码也有三种编码型态:Code A,Code B,Code C
当起始码为Code A时,后面的条码资料则选择A型态字元表编码逻辑。
而起始码为Code B时,后面的条码资料则选择B型态字元表编码逻辑。
若全部为数字时可选择Code C型态字元表编码逻辑,以缩短条码的列印长度。
每一类型的字元表内也有Code A,Code B,Code C,但条码编码逻辑与起始码不同,请参阅【Code 128 条码字元表】
接下来我们看三种起始码的条码编码方式
Code A条码资料为11010000100,条码图案为 ,相对值为103。
Code B条码资料为11010010000,条码图案为 ,相对值为104。
Code C条码资料为11010011100,条码图案为 ,相对值为105。
结束码编码方式
A,B,C三种不同型态编码方式,结束码均固定为1100011101011,条码图案为,相对值为106。
Code 128 条码三种字元表型态编码差异说明
1.A型态字元表,支援的资料码包含:标准ASCII=0 ~ ASCII=95等字元及控制码部份,以及7个Code 128 条码专属字元,共计103个字元,请参阅code 128 条码字元表中的A型态。 (ASCII=0~31为控制码,ASCII=32~95为可见字元。)
2.B型态字元表包含:标准ASCII=32 ~ ASCII=127等字元,以及7个Code 128 条码专属字元,共计103个字元,请参阅code 128 条码字元表中的B型态。
3.C型态字元表主要支援数字00~99的编码使用,若使用长数字的资料时,可以用C型态编码,可缩短条码列印的长度。数字00~99加上3个特殊控制字元,总共103个字元。
特殊控制字元说明
1.Code A:表示后面的字元编码型态要使用A table。
2.Code B:表示后面的字元编码型态要使用B table。
3.Code C:表示后面的字元编码型态要使用C table。
4.Shift:等于Shift键的作用。
5.FNC 1:等于F1键的作用。
6.FNC 2:等于F2键的作用。
7.FNC 3:等于F3键的作用。
8.FNC 3:等于F4键的作用。
Code 128 条码应用实例说明
1.Code C型态应用时机
我们举以下例子,如果资料内如为数字0123456789,使用Code A及Code C条码列印长度的差异,Code C条码列印出来的长度较短。
Code A型态时的编码如下图
Code C型态时的编码如下图
2.Code A及Code C型态混合应用时机
前面4个字元ABCB使用A table编码,所以起始码以Code A开始,然后在数字0123456789之前加上Code C特殊控制码,则后面的数字会转换成C table编码,如此就可以缩短条码列印的长度。
Code 128 条码检查码的计算方式
我们以起始码Code B编码的Andy's条码来说明
步骤一.计算出S值
S=103+(d1*1)+(d2*2)+ (d3*3)+ (d4*4)+ …
d1:表示资料第1个字元
因为起始码为Code B,所以字元相对值使用B table。
则S=103+(33*1)+(78*2)+(68*3)+(89*4)+(7*5)+(83*6)=103+33+156+ 204+356+35+498=1385
步骤二.将S值除以103,取其余数M值。
1385/103=13…46 取余数M=46
步骤三.将M值46代入B table找到相对值的字元为N,即检查码为N。
提醒:
若资料码里有Code A,Code B,Code C型态转换,检查码代入的依据均以起始码相对应的字元组型态为主。
Code 128 条码字元表